home *** CD-ROM | disk | FTP | other *** search
-
- #ifndef __RESOLVEOBJECTSPECIFIER__
- #define __RESOLVEOBJECTSPECIFIER__
-
- //
- // For TDescriptor
- //
- #include "MoreAEM.h"
-
- class TAbstractScriptableObject;
- class TAbstractObjectSpecifier;
- class TAETransaction;
-
- TTokenDescriptor ResolveObjectSpecifier(const TAETransaction& t, TDescriptor objectSpecifier, TDescriptor* objectThatCausedError = nil);
- TAbstractScriptableObject* GetNullContainer();
- TAbstractObjectSpecifier* ParseObjectSpecifier(TDescriptor objectSpecifier, DescType desiredClassOfParent = typeNull, DescType keyFormOfParent = typeNull, TDescriptor* keyDataOfParent = nil);
-
- //========================================================================================
- // Class TAbstractObjectSpecifier
- //========================================================================================
-
- class TAbstractObjectSpecifier
- {
- public:
- virtual ~TAbstractObjectSpecifier();
-
- virtual DescType KeyForm() const;
- virtual TAbstractObjectSpecifier* ExtractParentSpecifier(DescType& desiredClass, DescType& keyForm, TDescriptor& keyData);
- virtual Boolean RootContainerIsObjectBeingExamined() const;
- virtual TDescriptor BuildObjectSpecifier() const = 0;
-
- virtual TAbstractScriptableObject* ResolveToken(const TAETransaction& t, TAbstractScriptableObject* objectBeingExamined, TDescriptor* objectThatCausedError = nil) const = 0;
- };
-
- //========================================================================================
- // Class TObjectSpecifier
- //========================================================================================
-
- class TObjectSpecifier : public TAbstractObjectSpecifier
- {
- private:
- DescType fDesiredClass;
- DescType fKeyForm;
- TDescriptor fKeyData;
- TAbstractObjectSpecifier* fContainer;
-
- TAbstractScriptableObject* fCachedToken;
- TAbstractScriptableObject* fCachedObjectBeingExamined;
-
- public:
- TObjectSpecifier(DescType desiredClass, DescType keyForm, TDescriptor keyData, TAbstractObjectSpecifier* container) :
- fDesiredClass(desiredClass), fKeyForm(keyForm), fKeyData(keyData), fContainer(container), fCachedToken(nil), fCachedObjectBeingExamined(nil) {};
- virtual ~TObjectSpecifier();
-
- virtual DescType KeyForm() const;
- virtual TAbstractObjectSpecifier* ExtractParentSpecifier(DescType& desiredClass, DescType& keyForm, TDescriptor& keyData);
- virtual Boolean RootContainerIsObjectBeingExamined() const;
- virtual TDescriptor BuildObjectSpecifier() const;
-
- virtual TAbstractScriptableObject* ResolveToken(const TAETransaction& t, TAbstractScriptableObject* objectBeingExamined, TDescriptor* objectThatCausedError = nil) const;
- };
-
- //========================================================================================
- // Class TObjectBeingExamined
- //========================================================================================
-
- class TObjectBeingExamined : public TAbstractObjectSpecifier
- {
- public:
- virtual DescType KeyForm() const;
- virtual Boolean RootContainerIsObjectBeingExamined() const;
- virtual TDescriptor BuildObjectSpecifier() const;
-
- virtual TAbstractScriptableObject* ResolveToken(const TAETransaction& t, TAbstractScriptableObject* objectBeingExamined, TDescriptor* objectThatCausedError = nil) const;
- };
-
- //========================================================================================
- // Class TArbitrarySpecifier
- //========================================================================================
-
- class TArbitrarySpecifier : public TAbstractObjectSpecifier
- {
- private:
- TDescriptor fKeyData;
-
- public:
- TArbitrarySpecifier(TDescriptor keyData) : fKeyData(keyData) {}
- virtual ~TArbitrarySpecifier();
-
- virtual TDescriptor BuildObjectSpecifier() const;
-
- virtual TAbstractScriptableObject* ResolveToken(const TAETransaction& t, TAbstractScriptableObject* objectBeingExamined, TDescriptor* objectThatCausedError = nil) const;
- };
-
-
- #endif
-